Self Join क्या हैं?
सेल्फ जॉइन एक सामान्य जॉइन है, लेकिन टेबल स्वचालित रूप से जुड़ जाती है।
सेल्फ जॉइन सिंटैक्स
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
नोट:
T1 और T2 एक ही तालिका के लिए अलग-अलग तालिका उपनाम हैं।
प्रदर्शन डेटाबेस
इस अभ्यास में हम प्रसिद्ध नॉर्थविंड मॉडल डेटाबेस का उपयोग करेंगे।
नीचे "ग्राहक" तालिका से एक चयन दिया गया है:
ग्राहक तालिका
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados... | Ana Trujillo | Avda. Constitución| México | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berg | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
+------------+--------------------------------+----------------+-------------------+----------+------------+---------+
SQL Self Join उदाहरण
निम्नलिखित SQL कथन उसी शहर के ग्राहकों से मेल खाता है:
उदाहरण
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City;
निष्कर्ष
व्याख्या:
यह सेल्फ जॉइन एक ही शहर (मेक्सिको डी.एफ.) में अलग-अलग ग्राहक ढूंढता है। जहां A.CustomerID <> B.CustomerID उसी ग्राहक के स्वचालित मिलान को रोकता है।
सेल्फ जॉइन कैसे काम करता है
तालिका प्रतिलिपि निर्माण
एक ही तालिका की दो प्रतियां बनाई जाती हैं (ए और बी)।
दो अलग-अलग तालिकाओं के रूप में माना जाता है
SQL दो डुप्लिकेट को अलग-अलग तालिकाओं के रूप में मानता है
जुड़ने की शर्त का उपयोग किया जाता है
वांछित डेटा प्राप्त करने के लिए जॉइन कंडीशन का उपयोग किया जाता है
परिणाम वापस आ गए हैं
तालिका की विभिन्न पंक्तियों के बीच संबंध दिखाए गए हैं
शैली के उदाहरण
सामान्य शहरी ग्राहक
उसी शहर में ग्राहक खोजें
SELECT A.CustomerName, B.CustomerName, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City;
कर्मचारी प्रबंधक संबंध
कर्मचारियों और उनके प्रबंधकों की पहचान करना
SELECT E1.Name AS Employee, E2.Name AS Manager
FROM Employees E1, Employees E2
WHERE E1.ManagerID = E2.EmployeeID;
उत्पाद संचार
संबंधित उत्पाद ढूंढें
SELECT P1.ProductName, P2.ProductName
FROM Products P1, Products P2
WHERE P1.CategoryID = P2.CategoryID
AND P1.ProductID <> P2.ProductID;
कर्मचारी-प्रबंधक उदाहरण
सेल्फ जॉइन का सबसे आम उपयोग कर्मचारी-प्रबंधक संबंधों को ढूंढना है:
कर्मचारियों की मेज
+-------------+-----------+------------+-----------+
| EmployeeID | Name | ManagerID | Department|
+-------------+-----------+------------+-----------+
| 1 | John | NULL | CEO |
| 2 | Jane | 1 | IT |
| 3 | Bob | 1 | HR |
| 4 | Alice | 2 | IT |
| 5 | Charlie | 3 | HR |
+-------------+-----------+------------+-----------+
Self Join Query
SELECT E1.Name AS Employee, E2.Name AS Manager
FROM Employees E1, Employees E2
WHERE E1.ManagerID = E2.EmployeeID;
निष्कर्ष
सेल्फ जॉइन के फायदे
डेटा संबंध
एक ही तालिका में विभिन्न पंक्तियों के बीच संबंध खोजने में मदद करता है
चरण डेटा
पदानुक्रमित या वृक्ष-जैसी डेटा संरचनाओं को संभालने के लिए उपयुक्त
जटिल विश्लेषण
यह डेटा के भीतर जटिल संबंधों और पैटर्न का विश्लेषण करने में मदद करता है